1. Field of the Invention
The present invention relates to systems using high-performance memory controllers and more specifically relates to methods and structure for using a memory model to provide state information regarding presently active rows within banks of the memory in association with arbitration for a memory subsystem to improve efficiency of arbitration decisions.
2. Discussion of Related Art
In present day digital electronic systems, high performance memory subsystems are comprised of a plurality of memory chip devices each having a plurality of banks within the device. High-performance memory chip devices typically provide for burst modes of access to help optimize bandwidth utilization of the memory device by an associated master or controlling device. Generally a “burst” operation is one where a single read or write command may access a sequence of locations within the memory chip device. Multiple banks within such memory chip devices may be operated in a variety of parallel fashions to overlap processing in one bank of the memory with processing in other banks of the memory. Such features are well-known in the art to improve performance of memory subsystems.
In general, present-day high-performance memory subsystems utilize a memory controller device between the master devices intended to utilize the memory subsystem (i.e., a general purpose processor or other special-purpose processing devices) and the memory subsystem. Such a memory controller device is intended to shield the master devices from details of controlling the memory chip devices and the memory banks to achieve optimal memory subsystem performance. For example, such memory controller devices assume responsibility for controlling the memory chip devices to best utilize burst mode operations and further controlling the multiple banks of memory to permit significant overlap in processing memory operations among the plurality of banks.
It is generally known in the art that a slave device (such as a memory controller) may be multi-ported in that it has multiple ports each of which may be coupled to a bus that, in turn, has one or more master devices coupled thereto. In the context of such a multi-ported memory controller a requesting “master device” may be understood to be a bus coupled to a port of the controller rather than a particular device on that bus. “Master device” as used herein should therefore be understood to encompass both a discrete master device coupled to a memory controller as well as a bus coupled to a port of a multi-ported memory controller.
A number of current high-performance memory subsystems utilize SDRAM (synchronous dynamic random access memory) memory chip devices as well as variants of such SDRAM devices that provided double data rate operations (i.e., DDR SDRAMs). As used herein, “SDRAM” refers to both standard SDRAM memory devices and DDR SDRAM memory devices. Features of the present invention as discussed further herein below are applicable to both types of SDRAM devices as well as other memory chip devices.
As is known in the art, industry standard specifications provide for a command structure in accessing SDRAM devices. For example, JEDEC standard JESD79 provides a standardized specification for commands used in accessing DDR SDRAM devices (published by the JEDEC Solid State Technology Association in June of 2000 and available publicly at www.jedec.org). Similar command structures are defined for access to all SDRAM devices as well as other types of memory chip devices. A memory controller device responds to memory operations requested by the master device and translates the request into appropriate SDRAM commands in an appropriate sequence to store or retrieve the requested data to or from the memory chip devices. The memory controller device therefore assumes responsibility for optimal use of available bandwidth for the memory devices with regard to the commands it is processing.
Addressing a location (or sequence of locations) in a memory chip device involves selecting a column and a row (also referred to as a “page”). The standardized command structure for accessing SDRAM devices (and other memory chip devices) requires that the desired page or row of a memory device must be open or active prior to reading or writing data from or to a memory location in that page. An “activate” command is typically used to specify the page or row to be opened prior to issuance of a read or write command accessing locations within that page. Typically, the activate command also specifies which bank of a multibank memory subsystem contains the row or page that is to be activated. An active or open page is closed or made inactive by a “precharge” operation. A typical sequence therefore involves closing a previously open page in a bank with a precharge command, opening a next page (in that bank) to be accessed with an activate command, and then issuing appropriate read or write commands to retrieve or store the desired data from or to memory locations in the open page.
The synchronous nature of SDRAM devices generally requires that some command be present on the input signal paths of the memory chip devices at each clock pulse applied to the memory chip device. When a read or write command is issued that requests a burst of a number of sequential locations, one or more clock cycles may be applied to the memory chip device before another read or write operation is permitted. To assure that some command is applied to the input of the memory chip device, typical memory controller devices generate nop (no-operation) commands to fill the otherwise unused command sequences during burst cycles. Other sequences of commands also require application of nop commands during latency periods awaiting completion of an earlier issued command to the memory chip device. For example, there is typically a latency following issuance of an activate command before the specified page is open and ready for a read or write command. Such latency periods are typically filled with nop commands by memory controller devices.
It is a constant problem to improve memory bandwidth utilization to thereby improve overall system performance for an associated system. Methods and structures that improve memory subsystem bandwidth utilization are therefore desirable. In particular, it is desirable to reduce the latency between activation of a page of memory and access to the opened page.
The sibling patent application teaches structures and methods for sequencing the commands applied by the memory controller to the memory subsystem banks to reduce latency and thereby improve system performance. Such a memory controller requires the master devices to indicate the need for a bank activation in advance of the actual need to utilize the bank. This information is required by the memory controller to enable it to detect appropriate command cycles in which SDRAM commands may be inserted to sequence the commands to improve the memory subsystem utilization. The second sibling patent application teaches structures and methods for enabling multiple master devices coupled to an improved arbiter to generate such information (apriori information) identifying the need for a bank in advance of the actual transfer of information to or from that bank. Such an improved arbiter may generate the apriori information from a number of possible sources of information.
It is evident from the above discussion that it remains a problem for an arbiter to efficiently make determinations as to which master devices are best suited for next receiving a grant of the shared resource to optimize utilization of the shared resource. In particular, it remains a problem for an arbiter to efficiently determine which of a plurality of master devices requesting access to a shared memory subsystem through a memory controller would best utilize the available memory subsystem bandwidth in view of various latency considerations in the control of the memory subsystem.